package com.itheima.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Component //被spring管理
@Aspect //这是一个切面类 (面向特定方法编程  增强业务方法代码)
@Slf4j
public class TimeAspect {

    /*
      增强模板
         分析 当前的增强 是  对原有业务
                               执行之前增强--计算开始时间
                               执行之后增强--计算结束时间 算出耗时
            属于 增强里面 环绕增强！
                      实现 一个实现方法模板
     */
    @Around("增强哪些方法!!")
    // Object 原始方法的返回值
    //  ProceedingJoinPoint pjp 参数 代表正在被增强方法
    public Object recordTime(ProceedingJoinPoint pjp) throws Throwable {
        // 在原始方法 运行前进行增强

        Object returnValue = pjp.proceed();//执行被增强方法  执行原始方法

        //在原始方法 运行后增强

        return returnValue;
    }
}

